home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr26 / netprog.zip / NETPROG.TAR / net / unixdgcli.c < prev    next >
C/C++ Source or Header  |  1989-12-17  |  1KB  |  56 lines

  1. /*
  2.  * Example of client using UNIX domain datagram protocol.
  3.  */
  4.  
  5. #include    "unix.h"
  6.  
  7. main(argc, argv)
  8. int    argc;
  9. char    *argv[];
  10. {
  11.     int            sockfd, clilen, servlen;
  12.     char            *mktemp();
  13.     struct sockaddr_un    cli_addr, serv_addr;
  14.  
  15.     pname = argv[0];
  16.  
  17.     /*
  18.      * Fill in the structure "serv_addr" with the address of the
  19.      * server that we want to send to.
  20.      */
  21.  
  22.     bzero((char *) &serv_addr, sizeof(serv_addr));
  23.     serv_addr.sun_family = AF_UNIX;
  24.     strcpy(serv_addr.sun_path, UNIXDG_PATH);
  25.     servlen = sizeof(serv_addr.sun_family) + strlen(serv_addr.sun_path);
  26.  
  27.     /*
  28.      * Open a socket (a UNIX domain datagram socket).
  29.      */
  30.  
  31.     if ( (sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
  32.         err_dump("client: can't open datagram socket");
  33.  
  34.     /*
  35.      * Bind a local address for us.
  36.      * In the UNIX domain we have to choose our own name (that
  37.      * should be unique).  We'll use mktemp() to create a unique
  38.      * pathname, based on our process id.
  39.      */
  40.  
  41.     bzero((char *) &cli_addr, sizeof(cli_addr));    /* zero out */
  42.     cli_addr.sun_family = AF_UNIX;
  43.     strcpy(cli_addr.sun_path, UNIXDG_TMP);
  44.     mktemp(cli_addr.sun_path);
  45.     clilen = sizeof(cli_addr.sun_family) + strlen(cli_addr.sun_path);
  46.  
  47.     if (bind(sockfd, (struct sockaddr *) &cli_addr, clilen) < 0)
  48.         err_dump("client: can't bind local address");
  49.  
  50.     dg_cli(stdin, sockfd, (struct sockaddr *) &serv_addr, servlen);
  51.  
  52.     close(sockfd);
  53.     unlink(cli_addr.sun_path);
  54.     exit(0);
  55. }
  56.